#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include <libxml/xpath.h>
#include <parser.h>
#include <tree.h>
#include "../Dispositivos/ConexionLDAP.h"

#ifndef SERVIDOR_H_
#define SERVIDOR_H_

#define CONEXION_LDAP 	1
#define CONEXION_TELNET 2
#define CONEXION_SOAP 	3

class Servidor{
private:

	Lista<Conexion*> conexiones;

	Lista<Persona*> personas;

	Lista<Perfil*> perfiles;

	Lista<Grupo*> grupos;

	static int total = 0;

	xmlDocPtr archivo;

	char* ruta;

public:

	//crea o levanta el archivo xml
	Servidor(char* archivo);

	//graba el archivo xml
	virtual ~Servidor();

	//agrega un nuevo d.a. a la lista
	void agregarConexion(int tipo, char* host, int port);

	//quita un nuevo d.a.
	//Pre: d.a. previamente conectado
	void quitarConexion(int id);

	//agrega una nueva operacion a considerar por los dispositivos
	void agregarOperacion(Encolable* encolable);

	//levanta el archivo xml a memoria para trabajar desde ahi
	void levantarXML();

	//recibe una nueva operacion del cliente, trabaja en memoria y avisa a los d.a.
	void operacionPersona(Persona* persona);

	//recibe una nueva operacion del cliente, trabaja en memoria y avisa a los d.a.
	void operacionPerfil(Perfil* perfil);

	//recibe una nueva operacion del cliente, trabaja en memoria y avisa a los d.a.
	void operacionGrupo(Grupo* grupo);
};

#endif /* SERVIDOR_H_ */
